﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using VemTransporte.Models.Basica;
using VemTransporte.Models.Fachada;

namespace VemTransporte.Views.UsuarioEmpresa
{
    public partial class MenuEmpresaTelefones : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null) 
            {
                ImageEmpresaLogoTipo.ImageUrl = string.Format("/EmpresaLogos/{0}.jpg", emp.Id);
                if (!IsPostBack)
                {
                    if (emp.TipoAcesso.Equals("ADMEMPRESA"))
                    {
                        liMenuEmpresaCadastro.Visible = true;
                        liMenuCadastroInicialEmpresa.Visible = false;
                        liMenuAlterarEndEmpresa.Visible = true;
                        liMenuCadastrarTelefones.Visible = true;
                        liMenuAlterarSenhaEmpresa.Visible = true;
                        liMenuAlterarLinhaEmpresa.Visible = false;
                        liMenuCadastroParadaEmpresa.Visible = false;
                        liMenuHoraLinhaEmpresa.Visible = false;
                        liMenuEmpresaVeiculo.Visible = true;
                    }
                    else if (emp.TipoAcesso.Equals("ADMTRANSPORTEPUBLICO"))
                    {
                        liMenuEmpresaCadastro.Visible = false;
                        liMenuCadastroInicialEmpresa.Visible = false;
                        liMenuAlterarEndEmpresa.Visible = false;
                        liMenuCadastrarTelefones.Visible = false;
                        liMenuAlterarSenhaEmpresa.Visible = false;
                        liMenuAlterarLinhaEmpresa.Visible = true;
                        liMenuCadastroParadaEmpresa.Visible = true;
                        liMenuHoraLinhaEmpresa.Visible = true;
                        liMenuEmpresaVeiculo.Visible = false;
                    }
                    else
                    {

                    }

                    if (emp.NomeFantasia.IndexOf(" ") > 0)
                    {
                        LabelNomeEmpresa.Text = emp.NomeFantasia.Substring(0, emp.NomeFantasia.IndexOf(" "));
                    }
                    else
                    {
                        LabelNomeEmpresa.Text = emp.NomeFantasia;
                    }

                    DropDownListTipoTel.DataSource = Fachada.Instance.ProcurarTipoTelefoneTodos();
                    DropDownListTipoTel.DataBind();
                    DropDownListTipoTel.Items.Insert(0, "<-- Selecione -->");

                    GridViewTelefone.DataSource = emp.EmpresaTelefones;/**/
                    GridViewTelefone.DataBind();
                }
            }
            else
            {
                Response.Redirect("LoginEmpresa.aspx");
            }
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null)
            {

                if (DropDownListTipoTel.SelectedIndex == 0)
                {
                    ErrorMessage.Text = "Selecione a descrição do telefone!";
                }
                else
                {
                    ErrorMessage.Text = "";

                    EmpresaTelefone _telefoneEmp = null;

                    IList<TipoTelefone> _TipoTelefones = Fachada.Instance.ProcurarTipoTelefoneTodos();

                    _telefoneEmp = (EmpresaTelefone)Session["_telefoneAlterar"];

                    if (_telefoneEmp != null)
                    {
                        Session["_telefoneAlterar"] = null;

                        if (emp.EmpresaTelefones.Contains(_telefoneEmp))
                        {
                            emp.EmpresaTelefones[emp.EmpresaTelefones.IndexOf(_telefoneEmp)].Numero = TextBoxTelefone.Text.Replace("(", "").Replace(")", "").Replace("-", "");
                            //Telefone encontrado na lista, alterando
                            //_telefoneEmp.Numero = TextBoxTelefone.Text;
                            foreach (TipoTelefone item in _TipoTelefones)
                            {
                                if (item.Id == int.Parse(DropDownListTipoTel.SelectedItem.Value))
                                {
                                    emp.EmpresaTelefones[emp.EmpresaTelefones.IndexOf(_telefoneEmp)].TipoTelefone = item;
                                    //_telefoneEmp.TipoTelefone = item;
                                    break;
                                }
                            }
                        }
                    }


                    if (_telefoneEmp == null)
                    {
                        //Adiciona novo telefone
                        _telefoneEmp = new EmpresaTelefone();
                        _telefoneEmp.Numero = TextBoxTelefone.Text.Replace("(", "").Replace(")", "").Replace("-", "");
                        foreach (TipoTelefone item in _TipoTelefones)
                        {
                            if (item.Id == int.Parse(DropDownListTipoTel.SelectedItem.Value))
                            {
                                _telefoneEmp.TipoTelefone = item;
                                break;
                            }
                        }

                        emp.AddTelefone(_telefoneEmp);
                    }

                    //Fachada.Instance.Salvar(emp);

                    Session["EmpresaLogada"] = emp;

                    GridViewTelefone.DataSource = emp.EmpresaTelefones;/**/
                    GridViewTelefone.DataBind();

                    TextBoxTelefone.Text = null;
                    DropDownListTipoTel.SelectedIndex = 0;
                }
            }
            else
            {
                Response.Redirect("LoginEmpresa.aspx");
            }

        }

        protected void GridViewTelefone_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {

                string numeroTelefone = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "numero"));


                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).CommandArgument = numeroTelefone;

                ((ImageButton)e.Row.FindControl("ImageButtonExcluir")).Attributes.Add("onClick",
                       " return confirm('Confirma o cancelamento do telefone nº " + numeroTelefone + "?');");
            }

        }

        protected void GridViewTelefone_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null)
            {

                ErrorMessage.Text = "";

                if (e.CommandName == "excluir")
                {
                    try
                    {
                        string numeroTelefone = e.CommandArgument.ToString();

                        foreach (EmpresaTelefone item in emp.EmpresaTelefones.ToList())
                        {
                            if (item.Numero.Equals(numeroTelefone))
                            {                                

                                emp.EmpresaTelefones.Remove(item);

                                //Fachada.Instance.Salvar(emp);

                                break;
                            }
                        }

                        Session["EmpresaLogada"] = emp;

                        GridViewTelefone.DataSource = emp.EmpresaTelefones;
                        GridViewTelefone.DataBind();

                        ScriptManager.RegisterStartupScript(UpdatePanel3, typeof(Page), "MSG", "javascript:alert('Excluido com Sucesso!');", true);

                    }
                    catch (Exception ex)
                    {
                        ErrorMessage.Text = ex.Message;
                    }
                }
            }
            else
            {
                //Empresa não encontrado 
                Response.Redirect("LoginEmpresa.aspx", false);
            }

        }

        protected void GridViewTelefone_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            e.Cancel = true;
        }

        protected void GridViewTelefone_RowEditing(object sender, GridViewEditEventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null)
            {
                try
                {
                    ErrorMessage.Text = "";

                    Session["_telefoneAlterar"] = emp.EmpresaTelefones[e.NewEditIndex];

                    TextBoxTelefone.Text = emp.EmpresaTelefones[e.NewEditIndex].Numero;

                    DropDownListTipoTel.ClearSelection();

                    foreach (ListItem item in DropDownListTipoTel.Items)
                    {
                        if (item.Value == Convert.ToString(emp.EmpresaTelefones[e.NewEditIndex].TipoTelefone.Id))
                        {
                            item.Selected = true;
                            break;
                        }
                    }

                    TextBoxTelefone.Focus();

                    e.Cancel = true;
                }
                catch (Exception ex)
                {
                    ErrorMessage.Text = ex.Message;
                }
            }
            else
            {
                //Empresa não encontrado 
                Response.Redirect("LoginEmpresa.aspx", false);
            }
        }

        protected void Button2_Click(object sender, EventArgs e)
        {
            Empresa emp = (Empresa)Session["EmpresaLogada"];

            if (emp != null)
            {
                try
                {
                    Fachada.Instance.Salvar(emp);

                    ScriptManager.RegisterStartupScript(this, this.GetType(), "Confimado", "alert('Alterado com sucesso!'); window.location='MenuEmpresa.aspx';", true);
                }
                catch (Exception ex)
                {
                    ErrorMessage.Text = ex.Message;
                }

            }
            else
            {
                //Empresa não encontrado 
                Response.Redirect("LoginEmpresa.aspx", false);
            }

        }
    }
}